home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 20 / 9 / DISK2092.ZIP / RBBS-LIT.ZIP / LIT / MITESIZE.DOC < prev    next >
Text File  |  1990-01-13  |  6KB  |  165 lines

  1. Mite-Size
  2. A Set of Merges to Minimize Code Size
  3. for RBBS 17.3
  4.  
  5. by Ken Goosens (data line 703-978-6360)
  6.  
  7.                  What These Merges Do
  8.  
  9. These merges allow you select what functions to eliminate
  10. from RBBS in order to reduce the size of the compiled program
  11. and reduce the amount of memory needed.
  12.  
  13. WARNING!!!  These merges must be applied to the UNMODIFIED
  14. source code to RBBS 17.3.  The merges substitute code for
  15. code in RBBS, and therefore may destroy other changes you
  16. have made to RBBS.   If you have fixes, you may want first to
  17. reduce the code, then add in the fixes.
  18.  
  19.                    History of Changes
  20.  
  21. 01-10-90. Lit code rewritten to conform to "periodless" base code.
  22.           END SUB written into line containing omitted subroutine
  23.           for uniformity, and to save a few extra ASCII bytes.
  24.           Most subroutine descriptions and 'SUBTITLEs' removed
  25.           when subs .lit-ted out.
  26.  
  27. 08-06-89.  Problem fixed when omitting fossil driver.
  28.  
  29. 07-30.     Incorporated changes made in 17.2B.
  30.  
  31. 05-22.     More variables added.  Recommend using BLED 2.2,
  32.         since 2.1 had a bug that would cause erroneous warnings.
  33.  
  34. 12-27-88.  Corrections to doc.  Should only use BLED 2.1.
  35.         Variables added.  More code removeable.
  36.  
  37. 12-13.     Two variables left out of 12-11 release of SETLIT.INC:
  38.         DOORRTN, and ASMFREESP.  Added.
  39.  
  40.         Three LIT files added:  ASMANSI (omits ANSI.OBJ) by using only
  41.            Basic screen writes.   CONFERENCE (no conferences).  And
  42.            DOORS (no doors).
  43.         
  44.         Documentation (this file) corrected:  base should use is
  45.            17.2A, and QB 4.5 added as possible compiler.
  46.  
  47. 01-09   Updated all .LIT files to recognize line numbers at the beginning
  48.         of every subroutine.  (These were made available in the Base dated
  49.         01/09/88.
  50.  
  51. 01-09   Corrected SUB4LIT.MRG to correctly identify NOVIEW.LIT.  Also
  52.         created the file (NOVIEW.LIT) since it was not in the archive.
  53.  
  54. 01-09   Added reference to DOORS.LIT to RBBSLIT.MRG.
  55.  
  56. 01-09   Added reference to DOORS3.LIT to SUB3LIT.MRG.
  57.  
  58. 01-09   Corrected CORVUS.LIT to use BRKFNAME as was being done in the
  59.         original code.
  60.  
  61. 01-09   Created SUB5HDR.LIT so that we are consistant.
  62.  
  63. 01-09   All SUBxHDR.LIT files were updated to identify that it is part
  64.         of a MITE SIZE program list.
  65.  
  66. 01-09   Standardized headings of each LIT file.
  67.  
  68. 01-15   Line should have been omitted for PCNET.  Doors code reduction
  69.         corrected.
  70.  
  71. 01-16   Four new LIT variables added.
  72.  
  73.               Why Code Reduction May be Needed
  74.  
  75. In the absence of an overlay linker or optimizing compiler for
  76. BASIC, RBBS has gotten steadily larger in code size as new functions
  77. have been added, and will continue to do so rather than not add
  78. new functions.  The increase in code size causes a problem on
  79. systems that wish to run 2 nodes within 640K of memory, or
  80. otherwise has only a restricted amount of memory to use.
  81.  
  82. These merges allow sysops with a supported BASIC compiler to
  83. reduce code size.  This is achieved by eliminating the code
  84. for unused functions, redundant code (typically doing the same
  85. thing in both BASIC and assembler), and functions which the
  86. sysop is willing to sacrifice.
  87.  
  88. RBBS can then continue to grow while still supporting sysops
  89. with limited memory.
  90.  
  91.  
  92.                How to Apply the Merges
  93.  
  94. 1st, you need a copy of the unmodifed source code for 17.2A.
  95. Put this in a separate subdirectory (e.g. 172A)
  96.  
  97. 2nd, in the subdirectory where you normally recompile RBBS,
  98. copy all the files in this application.
  99.  
  100. 3rd, modify the file MAKELIT.BAT by putting in the drive/path
  101. for the original code (the first parm to BLED).  The lines
  102. you should modify all begin with "*$", which is the default
  103. for a BLED metacommand.   The lines beginning with "* " are
  104. BLED comments, which are ignored in a merge.
  105.  
  106. 4th, get BLED version 2.2 or higher.  The latest is 2.2.
  107. Earlier versions lack the necessary features.
  108. Either put BLED in with the merges or in your
  109. path.  The new BLED functions are documented in BLED.DOC.
  110.  
  111. 5th, use your favorite text editor to modify the file
  112. SETLIT.INC.   Directions are right in the file.   Here is where
  113. you specify what options use are using and which you don't
  114. want.   This is the fundamental "driver" used.   The typical
  115. way you remove code is by setting a variable to the value
  116. "OFF", e.g. BAUD450 to "OFF" to save code by not supporting
  117. changing 300 baud to 450, or LIBRARY to "OFF" if not using the
  118. Library section.
  119.  
  120. 6th, execute the MAKELIT.BAT, which will generate the code
  121. needed to support your application (a new RBBS-PC.BAS,
  122. RBBSSUB2.BAS, and RBBSSUB3.BAS).  The version will say
  123. "17.2A Mite-Sized".  You should get no BLED warnings.
  124.  
  125. 7th, recompile.  Hint:  QB 3 produces the largest code.
  126. QB 2.01 is smaller, and QB 1.02 is the smallest.   QB 4.5
  127. works but produces the largest code of all.
  128. Also when removing certain routines it is possible to
  129. further reduce the size of the resulting .EXE file by
  130. removing the associated .OBJ from the link step. i.e.
  131. If you specify MULTNODE = NETBIOS then you can remove
  132. BDRIVEC2.OBJ, PCNET.OBJ, RBBSML.OBJ, 10NET.OBJ and
  133. RBBSDV.OBJ from the link parameters.
  134.  
  135. Never use the /E option in linking.  You should
  136. get no errors when recompiling.
  137.  
  138. 8th, reconfigure RBBS for the reduced code, if needed.  For example,
  139. disable the commands for functions you remove, such as taking out
  140. the 'A' command if you turn questionnaires off.
  141.  
  142.  
  143.                    What the Files Mean
  144.  
  145. SETLIT.INC - An file shared by all merges, which sets the
  146. options the sysop wants and does not want.  Basically
  147. defines BLED metavariables.
  148.  
  149. RBBSLIT.MRG, SUB1LIT.MRG,SUB2LIT.MRG, SUB3LIT.MRG, SUB4LIT.MRG,
  150. SUB5LIT.MRG.
  151.  
  152. The fundamental BLED merges for rbbs-pc.bas, rbbssub1.bas,
  153. rbbssub2.bas, rbbssub3.bas, rbbssub4.bas and rbbssub5.bas
  154. respectively.  Each reads in (includes) SETLIT.INC to set
  155. the metavariables, then uses the values to determines what
  156. merges to process in the run.
  157.  
  158. *.LIT.  Files that reduce the code.
  159.  
  160.  
  161. You are welcome to enhance these merges with further code reduction.
  162. Please report any problems to Ken Goosens, data # 703-978-6360.
  163. Realize that there is no way I can test the many different
  164. environments or all the combinations of choices.
  165.